#ifndef __DEVICE_H
#define __DEVICE_H
#include <iostream>
using namespace std;

const int MAX_TRAINER_NAME_LEN = 20;

class Device
{
protected:
	char name[MAX_TRAINER_NAME_LEN];
	static int idGenerator;	//#WD[1] RonnyR 3.12
	int idNumber;			//#WD[1] RonnyR 3.12
public:
	Device(const char* n);

	void  setName(const char* n);
	const char* getName()     const {return name;}
	const int   getIdNumber() const {return idNumber;}

	bool operator==(const Device &other) const;
	
	//const Device & operator=(const Device & D);				//#WD[2] RonnyR 3.12
    friend ostream & operator<<(ostream & os,const Device & D); //#WD[2] RonnyR 3.12
	friend istream & operator>>(istream & in,Device & D);

	virtual void showSafetyInstructions () const=0;
	virtual Device * Clone() const=0;
	virtual void PrintDevice(ostream & os) const=0;

};

#endif // __DEVICE_H